<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    /*
        属性的简洁表示语法
        ES6允许在大括号里面，直接写入变量和函数，作为对象的属性和方法。这样的书写更加简洁。
    */

    var name = 'YANG'
    //属性常规写法
    var user = {
        name: name,
        age: 22,
        getName: function () {
            console.log(this.name)
        }
    }
    console.log(user.name)
    user.getName()
    //属性名简洁写法
    var user1 = {
        name,
        age: 22,
        getName() {
            console.log(this.name)
        }
    }
    console.log(user.name)
    user1.getName()

    //这种写法用于函数返回值，将会非常方便
    //方法常规写法
    function getPoint() {
        var x = 10;
        var y = 20;
        return {
            x: x,
            y: y
        }
    }
    console.log(getPoint().x, getPoint().y)
    //方法简写
    function getPoints() {
        var x = 10;
        var y = 20;
        return {
            x,
            y
        }
    }
    console.log(getPoints().x, getPoints().y)

    //属性名表达式
    //ES6允许字面量定义对象时，用表达式作为对象的属性名，即把表达式放在括号内
    //常规写法
    var user2 = {
        name: "小红，小明，小张",
        age: 18
    }
    console.log(user2.name)
    //属性名表达式
    var a = 'name'
    var user3 = {
        [a]: "小红，小明，小张",
        age:18
    }
    console.log(user3.name)


    //对象的扩展运算符
    var test = {
        a:10,
        b:20
    }
    // console.log(...test)//报错，对象不能使用扩展运算符

    var test1 = {
       a:10,
       b:20,
    }
    var test2 = {
        ...test1
    }
    console.log(test2)
</script>